请大家帮我看一下这个程序^_^

来源:百度知道 编辑:UC知道 时间:2024/07/01 02:22:26
题目是这样的:
输入一串有字母和数字的混合字符串,编写程序将字符串中的字母和数字分开并分别存入两个不同的文件中。
我的程序是:
#include <iostream.h>
#include <fstream.h>
void main(){
char *p;
p=new char[];
for(int i=0;i!='\n';i++)
{
cin>>p[i];
}
for( i=0;i!='0';i++)
if((p[i]>='a' && p[i]<='z') || (p[i]>='A' && p[i]<='Z'))
{ofstream ch("d:\\ch.txt");
ch<<*p<<endl;
}
else
{ofstream di("d:\\di.txt");
di<<*p<<endl;
}
}
问题是为什么,只能有一个字母,而且是分别存入没有分开的存入两个文件。请各位大侠帮小妹看看,谢谢了~~~忙了很长时间都不会,这个东西好难啊...要不就是我太笨了~~初学者,大家别见笑啊~~~成功的话有加分呦~~^_^

#include <iostream>
#include <fstream>
using namespace std;
void main(){

char cp[50];
char* p;
p=&cp[0];
cin.getline(p,50); //一次性输入字符

cp[strlen(p)]='\0'; //重新限定了字符大小
ofstream ch("ch.txt");
ofstream di("di.txt");
for(int i=0;p[i]!='\0';i++)
if((p[i]>='a' && p[i]<='z') || (p[i]>='A' && p[i]<='Z'))
{
ch<<p[i];
}
else
{
di<<p[i];
}
}

先回答你的问题,因为你的ofstream是在for循环里面定义的然后没一次循环相当于重新打开这个文件,把你前面写的都覆盖掉了,所以只能显示一个字母。然后就是你的*P定义有问题,不能用他指向一个没有大小的字符数组,所以可以随便给个大小,然后在把P指向他的首地址

谢谢~

有事儿,来不及细看了,至少有一个问题

for(int i=0;i!='\n';i++)
{
cin>>p[i];
}

要改为:
for(int i=0;;i++)
{
cin>>p[i];
if(p[i] == '\n')break;
}

p的定义也有问题,来不及写了,楼